using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LoachFIsh : Fish
{
    [Header("垂直移动配置")]
    [SerializeField] private float minYBoundary = -4.4f;   // 下边界（世界单位）
    [SerializeField] private float maxYBoundary = 2.8f;    // 上边界（世界单位）
    private Vector3 moveDirection;                      // 移动方向（上下）

    protected override void InitializeMovement()
    {
        // 随机决定初始移动方向：向上或向下
        bool moveUp = Random.value > 0.5f;
        moveDirection = moveUp ? Vector3.up : Vector3.down;

        // 可选：根据方向调整精灵朝向（如果有垂直翻转需求）
        // _spriteRenderer.flipY = moveDown; // 若需要垂直翻转可取消注释
    }

    protected override void Move()
    {
        // 垂直方向移动（固定速度）
        transform.Translate(moveDirection * fishMoveSpeed * Time.deltaTime);
    }


    // 咱就把值写死把
    //protected override void CalculateBounds()
    //{
    //    // 自动计算屏幕上下边界（可覆盖默认值）
    //    if (mainCamera == null) mainCamera = Camera.main;
    //    float screenHeight = 2f * mainCamera.orthographicSize;
    //    minYBoundary = mainCamera.transform.position.y - screenHeight * 0.5f;
    //    maxYBoundary = mainCamera.transform.position.y + screenHeight * 0.5f;
    //}

    protected override void CheckBounds()
    {
        Vector3 position = transform.position;

        // 检测上边界
        if (moveDirection.y > 0 && position.y >= maxYBoundary)
        {
            ReverseDirection();
        }
        // 检测下边界
        else if (moveDirection.y < 0 && position.y <= minYBoundary)
        {
            ReverseDirection();
        }
    }

    protected override void ReverseDirection()
    {
        // 修正位置避免穿模
        Vector3 position = transform.position;
        if (moveDirection.y > 0) // 到达上边界
        {
            position.y = maxYBoundary;
        }
        else // 到达下边界
        {
            position.y = minYBoundary;
        }
        transform.position = position;

        // 反转移动方向
        moveDirection *= -1;



        _spriteRenderer.flipX = moveDirection.x < 0; // 可根据需求调整
    }

}
